
package com.greenyoung.pwiki.common.exception;

import com.greenyoung.pwiki.common.entity.Result;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.servlet.NoHandlerFoundException;

/**
 * 自定义全局异常处理器，将MyException异常信息保装成Result参数返回
 *
 */
@RestControllerAdvice
public class MyExceptionHandler {
	private Logger logger = LoggerFactory.getLogger(getClass());

	@ExceptionHandler(MyException.class)
	public Result handleMyException(MyException e){
		Result r = new Result();
		r.put("code", e.getCode());
		r.put("msg", e.getMessage());

		return r;
	}

	@ExceptionHandler(NoHandlerFoundException.class)
	public Result handlerNoFoundException(Exception e) {
		logger.error(e.getMessage(), e);
		return Result.error(HttpStatus.NOT_FOUND, "路径不存在，请检查路径是否正确");
	}

	//TODO:完善异常处理
//	@ExceptionHandler(DuplicateKeyException.class)
//	public Result handleDuplicateKeyException(DuplicateKeyException e){
//		logger.error(e.getMessage(), e);
//		return Result.error("数据库中已存在该记录");
//	}
//
//	@ExceptionHandler(AuthorizationException.class)
//	public Result handleAuthorizationException(AuthorizationException e){
//		logger.error(e.getMessage(), e);
//		return Result.error("没有权限，请联系管理员授权");
//	}

	@ExceptionHandler(Exception.class)
	public Result handleException(Exception e){
		logger.error(e.getMessage(), e);
		return Result.error();
	}
}
